/Users/thachakritkomolkhetruck/Desktop/IA_NetBeans_Project copy/src/Prototype/Calculator.java
  1 /*
  2  * To change this license header, choose License Headers in Project Properties.
  3  * To change this template file, choose Tools | Templates
  4  * and open the template in the editor.
  5  */
  6 package Prototype;
  7 
  8 import java.util.ArrayList;
  9 
 10 /**
 11  *
 12  * @author ACER
 13  */
 14 public class Calculator {
 15     public static ArrayList<String> typeCalc1(String first, String second){
 16         ArrayList<String> multiplier4 = new ArrayList<String>();
 17         Type[]types = new Type[18];
 18         double[]normalMultiplier = {1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
 19         types[0] = new Type("Normal",normalMultiplier);
 20         double[]fireMultiplier = {1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
 21         types[1] = new Type("Fire",fireMultiplier);
 22         double[]waterMultiplier = {1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
 23         types[2] = new Type("Water",waterMultiplier);
 24         double[]grassMultiplier = {1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
 25         types[3] = new Type("grass",grassMultiplier);
 26         double[]electricMultiplier = {1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
 27         types[4] = new Type("Electric",electricMultiplier);
 28         double[]iceMultiplier = {1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
 29         types[5] = new Type("Ice",iceMultiplier);
 30         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
 31         types[6] = new Type("Fighting",fightingMultiplier);
 32         double[]poisonMultiplier = {1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
 33         types[7] = new Type("Poison",poisonMultiplier);
 34         double[]groundMultiplier = {1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
 35         types[8] = new Type("Ground",groundMultiplier);
 36         double[]flyingMultiplier = {1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
 37         types[9] = new Type("Flying",flyingMultiplier);
 38         double[]psychicMultiplier = {1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
 39         types[10] = new Type("Psychic",psychicMultiplier);
 40         double[]bugMultiplier = {1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
 41         types[11] = new Type("Bug",bugMultiplier);
 42         double[]rockMultiplier = {0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
 43         types[12] = new Type("Rock",rockMultiplier);
 44         double[]ghostMultiplier = {0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
 45         types[13] = new Type("Ghost",ghostMultiplier);
 46         double[]dragonMultiplier = {1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
 47         types[14] = new Type("Dragon",dragonMultiplier);
 48         double[]darkMultiplier = {1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
 49         types[15] = new Type("Dark",darkMultiplier);
 50         double[]steelMultiplier = {0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
 51         types[16] = new Type("Steel",steelMultiplier);
 52         double[]fairyMultiplier = {1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
 53         types[17] = new Type("fairy",fairyMultiplier);
 54         if(!(second==(null))){
 55             boolean type1Found = true;
 56             int type1Index = 0;
 57             int i = 0;
 58             while(type1Found){
 59                 if(first.equalsIgnoreCase(types[i].getTypeName())){
 60                     type1Index = i;
 61                     type1Found = false;
 62                 }
 63                 i++;
 64             }
 65             boolean type2Found = true;
 66             int type2Index = 0;
 67             i = 0;
 68             while(type2Found){
 69             if(second.equalsIgnoreCase(types[i].getTypeName())){
 70                 type2Index = i;
 71                 type2Found = false;
 72             }
 73             i++;
 74         }
 75             double[] type1 = types[type1Index].getTypeMultiplier();
 76             double[] type2 = types[type2Index].getTypeMultiplier();
 77             for(int o=0;o<types.length;o++){
 78  
 79             
 80             if(type1[o]*type2[o]==1){
 81                 
 82                 multiplier4.add(types[o].getTypeName());
 83             }
 84         }
 85         return multiplier4;
 86         }else{
 87             boolean type1Found = true;
 88             int type1Index = 0;
 89             int i = 0;
 90             while(type1Found){
 91             if(first.equalsIgnoreCase(types[i].getTypeName())){
 92                 type1Index = i;
 93                 type1Found = false;
 94             }
 95             i++;
 96             } 
 97             double[] type1 = types[type1Index].getTypeMultiplier();
 98             for(int o=0;o<types.length;o++){
 99                 if(type1[o]==1){
100                 multiplier4.add(types[o].getTypeName());
101             }
102         }
103         return multiplier4;
104         }
105         
106     }
107         public static ArrayList<String> typeCalc4(String first, String second){
108         ArrayList<String> multiplier4 = new ArrayList<String>();
109         Type[]types = new Type[18];
110         double[]normalMultiplier = {1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
111         types[0] = new Type("Normal",normalMultiplier);
112         double[]fireMultiplier = {1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
113         types[1] = new Type("Fire",fireMultiplier);
114         double[]waterMultiplier = {1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
115         types[2] = new Type("Water",waterMultiplier);
116         double[]grassMultiplier = {1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
117         types[3] = new Type("grass",grassMultiplier);
118         double[]electricMultiplier = {1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
119         types[4] = new Type("Electric",electricMultiplier);
120         double[]iceMultiplier = {1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
121         types[5] = new Type("Ice",iceMultiplier);
122         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
123         types[6] = new Type("Fighting",fightingMultiplier);
124         double[]poisonMultiplier = {1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
125         types[7] = new Type("Poison",poisonMultiplier);
126         double[]groundMultiplier = {1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
127         types[8] = new Type("Ground",groundMultiplier);
128         double[]flyingMultiplier = {1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
129         types[9] = new Type("Flying",flyingMultiplier);
130         double[]psychicMultiplier = {1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
131         types[10] = new Type("Psychic",psychicMultiplier);
132         double[]bugMultiplier = {1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
133         types[11] = new Type("Bug",bugMultiplier);
134         double[]rockMultiplier = {0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
135         types[12] = new Type("Rock",rockMultiplier);
136         double[]ghostMultiplier = {0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
137         types[13] = new Type("Ghost",ghostMultiplier);
138         double[]dragonMultiplier = {1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
139         types[14] = new Type("Dragon",dragonMultiplier);
140         double[]darkMultiplier = {1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
141         types[15] = new Type("Dark",darkMultiplier);
142         double[]steelMultiplier = {0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
143         types[16] = new Type("Steel",steelMultiplier);
144         double[]fairyMultiplier = {1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
145         types[17] = new Type("fairy",fairyMultiplier);
146         if(!(second==(null))){
147             boolean type1Found = true;
148             int type1Index = 0;
149             int i = 0;
150             while(type1Found){
151                 if(first.equalsIgnoreCase(types[i].getTypeName())){
152                     type1Index = i;
153                     type1Found = false;
154                 }
155                 i++;
156             }
157             boolean type2Found = true;
158             int type2Index = 0;
159             i = 0;
160             while(type2Found){
161             if(second.equalsIgnoreCase(types[i].getTypeName())){
162                 type2Index = i;
163                 type2Found = false;
164             }
165             i++;
166         }
167             double[] type1 = types[type1Index].getTypeMultiplier();
168             double[] type2 = types[type2Index].getTypeMultiplier();
169             for(int o=0;o<types.length;o++){
170  
171             
172             if(type1[o]*type2[o]==4){
173                 
174                 multiplier4.add(types[o].getTypeName());
175             }
176         }
177         return multiplier4;
178         }else{
179             boolean type1Found = true;
180             int type1Index = 0;
181             int i = 0;
182             while(type1Found){
183             if(first.equalsIgnoreCase(types[i].getTypeName())){
184                 type1Index = i;
185                 type1Found = false;
186             }
187             i++;
188             } 
189             double[] type1 = types[type1Index].getTypeMultiplier();
190             for(int o=0;o<types.length;o++){
191                 if(type1[o]==4){
192                 multiplier4.add(types[o].getTypeName());
193             }
194         }
195         return multiplier4;
196         }
197         
198     }
199     public static ArrayList<String> typeCalc2(String first, String second){
200         ArrayList<String> multiplier4 = new ArrayList<String>();
201         Type[]types = new Type[18];
202         double[]normalMultiplier = {1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
203         types[0] = new Type("Normal",normalMultiplier);
204         double[]fireMultiplier = {1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
205         types[1] = new Type("Fire",fireMultiplier);
206         double[]waterMultiplier = {1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
207         types[2] = new Type("Water",waterMultiplier);
208         double[]grassMultiplier = {1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
209         types[3] = new Type("grass",grassMultiplier);
210         double[]electricMultiplier = {1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
211         types[4] = new Type("Electric",electricMultiplier);
212         double[]iceMultiplier = {1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
213         types[5] = new Type("Ice",iceMultiplier);
214         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
215         types[6] = new Type("Fighting",fightingMultiplier);
216         double[]poisonMultiplier = {1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
217         types[7] = new Type("Poison",poisonMultiplier);
218         double[]groundMultiplier = {1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
219         types[8] = new Type("Ground",groundMultiplier);
220         double[]flyingMultiplier = {1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
221         types[9] = new Type("Flying",flyingMultiplier);
222         double[]psychicMultiplier = {1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
223         types[10] = new Type("Psychic",psychicMultiplier);
224         double[]bugMultiplier = {1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
225         types[11] = new Type("Bug",bugMultiplier);
226         double[]rockMultiplier = {0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
227         types[12] = new Type("Rock",rockMultiplier);
228         double[]ghostMultiplier = {0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
229         types[13] = new Type("Ghost",ghostMultiplier);
230         double[]dragonMultiplier = {1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
231         types[14] = new Type("Dragon",dragonMultiplier);
232         double[]darkMultiplier = {1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
233         types[15] = new Type("Dark",darkMultiplier);
234         double[]steelMultiplier = {0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
235         types[16] = new Type("Steel",steelMultiplier);
236         double[]fairyMultiplier = {1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
237         types[17] = new Type("fairy",fairyMultiplier);
238         if(!(second==(null))){
239             boolean type1Found = true;
240             int type1Index = 0;
241             int i = 0;
242             while(type1Found){
243                 if(first.equalsIgnoreCase(types[i].getTypeName())){
244                     type1Index = i;
245                     type1Found = false;
246                 }
247                 i++;
248             }
249             boolean type2Found = true;
250             int type2Index = 0;
251             i = 0;
252             while(type2Found){
253             if(second.equalsIgnoreCase(types[i].getTypeName())){
254                 type2Index = i;
255                 type2Found = false;
256             }
257             i++;
258         }
259             double[] type1 = types[type1Index].getTypeMultiplier();
260             double[] type2 = types[type2Index].getTypeMultiplier();
261             for(int o=0;o<types.length;o++){
262  
263             
264             if(type1[o]*type2[o]==2){
265                 
266                 multiplier4.add(types[o].getTypeName());
267             }
268         }
269         return multiplier4;
270         }else{
271             boolean type1Found = true;
272             int type1Index = 0;
273             int i = 0;
274             while(type1Found){
275             if(first.equalsIgnoreCase(types[i].getTypeName())){
276                 type1Index = i;
277                 type1Found = false;
278             }
279             i++;
280             } 
281             double[] type1 = types[type1Index].getTypeMultiplier();
282             for(int o=0;o<types.length;o++){
283                 if(type1[o]==2){
284                 multiplier4.add(types[o].getTypeName());
285             }
286         }
287         return multiplier4;
288         }
289         
290     }
291     public static ArrayList<String> typeCalc0(String first, String second){
292         ArrayList<String> multiplier4 = new ArrayList<String>();
293         Type[]types = new Type[18];
294         double[]normalMultiplier = {1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
295         types[0] = new Type("Normal",normalMultiplier);
296         double[]fireMultiplier = {1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
297         types[1] = new Type("Fire",fireMultiplier);
298         double[]waterMultiplier = {1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
299         types[2] = new Type("Water",waterMultiplier);
300         double[]grassMultiplier = {1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
301         types[3] = new Type("grass",grassMultiplier);
302         double[]electricMultiplier = {1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
303         types[4] = new Type("Electric",electricMultiplier);
304         double[]iceMultiplier = {1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
305         types[5] = new Type("Ice",iceMultiplier);
306         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
307         types[6] = new Type("Fighting",fightingMultiplier);
308         double[]poisonMultiplier = {1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
309         types[7] = new Type("Poison",poisonMultiplier);
310         double[]groundMultiplier = {1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
311         types[8] = new Type("Ground",groundMultiplier);
312         double[]flyingMultiplier = {1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
313         types[9] = new Type("Flying",flyingMultiplier);
314         double[]psychicMultiplier = {1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
315         types[10] = new Type("Psychic",psychicMultiplier);
316         double[]bugMultiplier = {1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
317         types[11] = new Type("Bug",bugMultiplier);
318         double[]rockMultiplier = {0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
319         types[12] = new Type("Rock",rockMultiplier);
320         double[]ghostMultiplier = {0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
321         types[13] = new Type("Ghost",ghostMultiplier);
322         double[]dragonMultiplier = {1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
323         types[14] = new Type("Dragon",dragonMultiplier);
324         double[]darkMultiplier = {1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
325         types[15] = new Type("Dark",darkMultiplier);
326         double[]steelMultiplier = {0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
327         types[16] = new Type("Steel",steelMultiplier);
328         double[]fairyMultiplier = {1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
329         types[17] = new Type("fairy",fairyMultiplier);
330         if(!(second==(null))){
331             boolean type1Found = true;
332             int type1Index = 0;
333             int i = 0;
334             while(type1Found){
335                 if(first.equalsIgnoreCase(types[i].getTypeName())){
336                     type1Index = i;
337                     type1Found = false;
338                 }
339                 i++;
340             }
341             boolean type2Found = true;
342             int type2Index = 0;
343             i = 0;
344             while(type2Found){
345             if(second.equalsIgnoreCase(types[i].getTypeName())){
346                 type2Index = i;
347                 type2Found = false;
348             }
349             i++;
350         }
351             double[] type1 = types[type1Index].getTypeMultiplier();
352             double[] type2 = types[type2Index].getTypeMultiplier();
353             for(int o=0;o<types.length;o++){
354  
355             
356             if(type1[o]*type2[o]==0){
357                 
358                 multiplier4.add(types[o].getTypeName());
359             }
360         }
361         return multiplier4;
362         }else{
363             boolean type1Found = true;
364             int type1Index = 0;
365             int i = 0;
366             while(type1Found){
367             if(first.equalsIgnoreCase(types[i].getTypeName())){
368                 type1Index = i;
369                 type1Found = false;
370             }
371             i++;
372             } 
373             double[] type1 = types[type1Index].getTypeMultiplier();
374             for(int o=0;o<types.length;o++){
375                 if(type1[o]==0){
376                 multiplier4.add(types[o].getTypeName());
377             }
378         }
379         return multiplier4;
380         }
381         
382     }
383     public static ArrayList<String> typeCalcHalf(String first, String second){
384         ArrayList<String> multiplier4 = new ArrayList<String>();
385         Type[]types = new Type[18];
386         double[]normalMultiplier = {1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
387         types[0] = new Type("Normal",normalMultiplier);
388         double[]fireMultiplier = {1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
389         types[1] = new Type("Fire",fireMultiplier);
390         double[]waterMultiplier = {1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
391         types[2] = new Type("Water",waterMultiplier);
392         double[]grassMultiplier = {1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
393         types[3] = new Type("grass",grassMultiplier);
394         double[]electricMultiplier = {1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
395         types[4] = new Type("Electric",electricMultiplier);
396         double[]iceMultiplier = {1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
397         types[5] = new Type("Ice",iceMultiplier);
398         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
399         types[6] = new Type("Fighting",fightingMultiplier);
400         double[]poisonMultiplier = {1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
401         types[7] = new Type("Poison",poisonMultiplier);
402         double[]groundMultiplier = {1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
403         types[8] = new Type("Ground",groundMultiplier);
404         double[]flyingMultiplier = {1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
405         types[9] = new Type("Flying",flyingMultiplier);
406         double[]psychicMultiplier = {1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
407         types[10] = new Type("Psychic",psychicMultiplier);
408         double[]bugMultiplier = {1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
409         types[11] = new Type("Bug",bugMultiplier);
410         double[]rockMultiplier = {0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
411         types[12] = new Type("Rock",rockMultiplier);
412         double[]ghostMultiplier = {0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
413         types[13] = new Type("Ghost",ghostMultiplier);
414         double[]dragonMultiplier = {1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
415         types[14] = new Type("Dragon",dragonMultiplier);
416         double[]darkMultiplier = {1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
417         types[15] = new Type("Dark",darkMultiplier);
418         double[]steelMultiplier = {0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
419         types[16] = new Type("Steel",steelMultiplier);
420         double[]fairyMultiplier = {1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
421         types[17] = new Type("fairy",fairyMultiplier);
422         if(!(second==(null))){
423             boolean type1Found = true;
424             int type1Index = 0;
425             int i = 0;
426             while(type1Found){
427                 if(first.equalsIgnoreCase(types[i].getTypeName())){
428                     type1Index = i;
429                     type1Found = false;
430                 }
431                 i++;
432             }
433             boolean type2Found = true;
434             int type2Index = 0;
435             i = 0;
436             while(type2Found){
437             if(second.equalsIgnoreCase(types[i].getTypeName())){
438                 type2Index = i;
439                 type2Found = false;
440             }
441             i++;
442         }
443             double[] type1 = types[type1Index].getTypeMultiplier();
444             double[] type2 = types[type2Index].getTypeMultiplier();
445             for(int o=0;o<types.length;o++){
446  
447             
448             if(type1[o]*type2[o]==0.5){
449                 
450                 multiplier4.add(types[o].getTypeName());
451             }
452         }
453         return multiplier4;
454         }else{
455             boolean type1Found = true;
456             int type1Index = 0;
457             int i = 0;
458             while(type1Found){
459             if(first.equalsIgnoreCase(types[i].getTypeName())){
460                 type1Index = i;
461                 type1Found = false;
462             }
463             i++;
464             } 
465             double[] type1 = types[type1Index].getTypeMultiplier();
466             for(int o=0;o<types.length;o++){
467                 if(type1[o]==0.5){
468                 multiplier4.add(types[o].getTypeName());
469             }
470         }
471         return multiplier4;
472         }
473         
474     }
475     public static ArrayList<String> typeCalcFourth(String first, String second){
476         ArrayList<String> multiplier4 = new ArrayList<String>();
477         Type[]types = new Type[18];
478         double[]normalMultiplier = {1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
479         types[0] = new Type("Normal",normalMultiplier);
480         double[]fireMultiplier = {1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
481         types[1] = new Type("Fire",fireMultiplier);
482         double[]waterMultiplier = {1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
483         types[2] = new Type("Water",waterMultiplier);
484         double[]grassMultiplier = {1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
485         types[3] = new Type("grass",grassMultiplier);
486         double[]electricMultiplier = {1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
487         types[4] = new Type("Electric",electricMultiplier);
488         double[]iceMultiplier = {1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
489         types[5] = new Type("Ice",iceMultiplier);
490         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
491         types[6] = new Type("Fighting",fightingMultiplier);
492         double[]poisonMultiplier = {1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
493         types[7] = new Type("Poison",poisonMultiplier);
494         double[]groundMultiplier = {1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
495         types[8] = new Type("Ground",groundMultiplier);
496         double[]flyingMultiplier = {1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
497         types[9] = new Type("Flying",flyingMultiplier);
498         double[]psychicMultiplier = {1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
499         types[10] = new Type("Psychic",psychicMultiplier);
500         double[]bugMultiplier = {1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
501         types[11] = new Type("Bug",bugMultiplier);
502         double[]rockMultiplier = {0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
503         types[12] = new Type("Rock",rockMultiplier);
504         double[]ghostMultiplier = {0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
505         types[13] = new Type("Ghost",ghostMultiplier);
506         double[]dragonMultiplier = {1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
507         types[14] = new Type("Dragon",dragonMultiplier);
508         double[]darkMultiplier = {1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
509         types[15] = new Type("Dark",darkMultiplier);
510         double[]steelMultiplier = {0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
511         types[16] = new Type("Steel",steelMultiplier);
512         double[]fairyMultiplier = {1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
513         types[17] = new Type("fairy",fairyMultiplier);
514         if(!(second==(null))){
515             boolean type1Found = true;
516             int type1Index = 0;
517             int i = 0;
518             while(type1Found){
519                 if(first.equalsIgnoreCase(types[i].getTypeName())){
520                     type1Index = i;
521                     type1Found = false;
522                 }
523                 i++;
524             }
525             boolean type2Found = true;
526             int type2Index = 0;
527             i = 0;
528             while(type2Found){
529             if(second.equalsIgnoreCase(types[i].getTypeName())){
530                 type2Index = i;
531                 type2Found = false;
532             }
533             i++;
534         }
535             double[] type1 = types[type1Index].getTypeMultiplier();
536             double[] type2 = types[type2Index].getTypeMultiplier();
537             for(int o=0;o<types.length;o++){
538  
539             
540             if(type1[o]*type2[o]==0.25){
541                 
542                 multiplier4.add(types[o].getTypeName());
543             }
544         }
545         return multiplier4;
546         }else{
547             boolean type1Found = true;
548             int type1Index = 0;
549             int i = 0;
550             while(type1Found){
551             if(first.equalsIgnoreCase(types[i].getTypeName())){
552                 type1Index = i;
553                 type1Found = false;
554             }
555             i++;
556             } 
557             double[] type1 = types[type1Index].getTypeMultiplier();
558             for(int o=0;o<types.length;o++){
559                 if(type1[o]==0.25){
560                 multiplier4.add(types[o].getTypeName());
561             }
562         }
563         return multiplier4;
564         }
565         
566     }
567         public static boolean typeCalcAdvantage(String first, String second, String third, String fourth){
568         ArrayList<String> multiplier4 = new ArrayList<String>();
569         Type[]types = new Type[19];
570         double[]nullMultiplier = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
571         types[0] = new Type("",nullMultiplier);
572         double[]normalMultiplier = {1,1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
573         types[1] = new Type("Normal",normalMultiplier);
574         double[]fireMultiplier = {1,1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
575         types[2] = new Type("Fire",fireMultiplier);
576         double[]waterMultiplier = {1,1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
577         types[3] = new Type("Water",waterMultiplier);
578         double[]grassMultiplier = {1,1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
579         types[4] = new Type("grass",grassMultiplier);
580         double[]electricMultiplier = {1,1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
581         types[5] = new Type("Electric",electricMultiplier);
582         double[]iceMultiplier = {1,1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
583         types[6] = new Type("Ice",iceMultiplier);
584         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
585         types[7] = new Type("Fighting",fightingMultiplier);
586         double[]poisonMultiplier = {1,1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
587         types[8] = new Type("Poison",poisonMultiplier);
588         double[]groundMultiplier = {1,1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
589         types[9] = new Type("Ground",groundMultiplier);
590         double[]flyingMultiplier = {1,1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
591         types[10] = new Type("Flying",flyingMultiplier);
592         double[]psychicMultiplier = {1,1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
593         types[11] = new Type("Psychic",psychicMultiplier);
594         double[]bugMultiplier = {1,1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
595         types[12] = new Type("Bug",bugMultiplier);
596         double[]rockMultiplier = {1,0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
597         types[13] = new Type("Rock",rockMultiplier);
598         double[]ghostMultiplier = {1,0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
599         types[14] = new Type("Ghost",ghostMultiplier);
600         double[]dragonMultiplier = {1,1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
601         types[15] = new Type("Dragon",dragonMultiplier);
602         double[]darkMultiplier = {1,1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
603         types[16] = new Type("Dark",darkMultiplier);
604         double[]steelMultiplier = {1,0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
605         types[17] = new Type("Steel",steelMultiplier);
606         double[]fairyMultiplier = {1,1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
607         types[18] = new Type("fairy",fairyMultiplier);
608         if(second!=null && fourth!=null){
609             boolean type1Found = true;
610             int type1Index = 0;
611             int i = 0;
612             while(type1Found){
613                 if(first.equalsIgnoreCase(types[i].getTypeName())){
614                     type1Index = i;
615                     type1Found = false;
616                 }
617                 i++;
618             }
619             boolean type2Found = true;
620             int type2Index = 0;
621             i = 0;
622             while(type2Found){
623                 if(second.equalsIgnoreCase(types[i].getTypeName())){
624                     type2Index = i;
625                     type2Found = false;
626                 }
627                 i++;
628             }
629             boolean type3Found = true;
630             int type3Index = 0;
631             i = 0;
632             while(type3Found){
633                 if(third.equalsIgnoreCase(types[i].getTypeName())){
634                     type3Index = i;
635                     type3Found = false;
636                 }
637                 i++;
638             }
639             boolean type4Found = true;
640             int type4Index = 0;
641             i = 0;
642             while(type4Found){
643                 if(fourth.equalsIgnoreCase(types[i].getTypeName())){
644                     type4Index = i;
645                     type4Found = false;
646                 }
647                 i++;
648             }
649             double[] type1 = types[type1Index].getTypeMultiplier();
650             double[] type2 = types[type2Index].getTypeMultiplier();
651  
652             if((type1[type3Index]==2&&type2[type3Index]==2)||(type1[type4Index]==2&&type2[type4Index]==2)||(type1[type4Index]*type2[type4Index]==2)||(type1[type3Index]*type2[type3Index]==2)){
653  
654                 return true;
655             }else{
656                return false; 
657             }
658         }else if(second!=null && fourth==null){
659             boolean type1Found = true;
660             int type1Index = 0;
661             int i = 0;
662             while(type1Found){
663                 if(first.equalsIgnoreCase(types[i].getTypeName())){
664                     type1Index = i;
665                     type1Found = false;
666                 }
667                 i++;
668             }
669             boolean type2Found = true;
670             int type2Index = 0;
671             i = 0;
672             while(type2Found){
673                 if(second.equalsIgnoreCase(types[i].getTypeName())){
674                     type2Index = i;
675                     type2Found = false;
676                 }
677                 i++;
678             }
679             
680             boolean type3Found = true;
681             int type3Index = 0;
682             i = 0;
683             while(type3Found){
684                 if(third.equalsIgnoreCase(types[i].getTypeName())){
685                     type3Index = i;
686                     type3Found = false;
687                 }
688                 i++;
689             }
690             double[] type1 = types[type1Index].getTypeMultiplier();
691             double[] type2 = types[type2Index].getTypeMultiplier();
692  
693             if((type1[type3Index]==2&&type2[type3Index]==2)||(type1[type3Index]*type2[type3Index]==2)){
694                 return true;
695             }else{
696                return false; 
697             }
698         }else if(second==null && fourth!=null){
699             boolean type1Found = true;
700             int type1Index = 0;
701             int i = 0;
702             while(type1Found){
703                 if(first.equalsIgnoreCase(types[i].getTypeName())){
704                     type1Index = i;
705                     type1Found = false;
706                 }
707                 i++;
708             }
709             
710             boolean type3Found = true;
711             int type3Index = 0;
712             i = 0;
713             while(type3Found){
714                 if(third.equalsIgnoreCase(types[i].getTypeName())){
715                     type3Index = i;
716                     type3Found = false;
717                 }
718                 i++;
719             }
720             boolean type4Found = true;
721             int type4Index = 0;
722             i = 0;
723             while(type4Found){
724                 if(fourth.equalsIgnoreCase(types[i].getTypeName())){
725                     type4Index = i;
726                     type4Found = false;
727                 }
728                 i++;
729             }
730             double[] type1 = types[type1Index].getTypeMultiplier();
731  
732  
733             if((type1[type3Index]==2)||(type1[type4Index]==2)||(type1[type4Index]==2)||(type1[type3Index]==2)){
734  
735                 return true;
736             }else{
737                return false; 
738             }
739         }else{
740             boolean type1Found = true;
741             int type1Index = 0;
742             int i = 0;
743             while(type1Found){
744                 if(first.equalsIgnoreCase(types[i].getTypeName())){
745                     type1Index = i;
746                     type1Found = false;
747                 }
748                 i++;
749             }
750            
751             
752             boolean type3Found = true;
753             int type3Index = 0;
754             i = 0;
755             while(type3Found){
756                 if(third.equalsIgnoreCase(types[i].getTypeName())){
757                     type3Index = i;
758                     type3Found = false;
759                 }
760                 i++;
761             }
762             
763             double[] type1 = types[type1Index].getTypeMultiplier();
764  
765  
766             if(type1[type3Index]==2){
767  
768                 return true;
769             }else{
770                return false; 
771             }
772         }
773  
774     }
775         public static boolean typeCalcAttack(String first, String second, String third){
776         ArrayList<String> multiplier4 = new ArrayList<String>();
777         Type[]types = new Type[19];
778         double[]nullMultiplier = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
779         types[0] = new Type("",nullMultiplier);
780         double[]normalMultiplier = {1,1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,1};
781         types[1] = new Type("Normal",normalMultiplier);
782         double[]fireMultiplier = {1,1,0.5,2,0.5,1,0.5,1,1,2,1,1,0.5,2,1,1,1,0.5,0.5};
783         types[2] = new Type("Fire",fireMultiplier);
784         double[]waterMultiplier = {1,1,0.5,0.5,2,2,0.5,1,1,1,1,1,1,1,1,1,1,0.5,1};
785         types[3] = new Type("Water",waterMultiplier);
786         double[]grassMultiplier = {1,1,2,0.5,0.5,0.5,2,1,2,0.5,2,1,2,1,1,1,1,1,1};
787         types[4] = new Type("grass",grassMultiplier);
788         double[]electricMultiplier = {1,1,1,1,1,0.5,1,1,1,2,0.5,1,1,1,1,1,1,0.5,1};
789         types[5] = new Type("Electric",electricMultiplier);
790         double[]iceMultiplier = {1,1,2,1,1,1,0.5,2,1,1,1,1,1,2,1,1,1,2,1};
791         types[6] = new Type("Ice",iceMultiplier);
792         double[]fightingMultiplier = {1,1,1,1,1,1,1,1,1,1,2,2,0.5,0.5,1,1,0.5,1,2};
793         types[7] = new Type("Fighting",fightingMultiplier);
794         double[]poisonMultiplier = {1,1,1,1,0.5,1,1,0.5,0.5,2,1,2,0.5,1,1,1,1,1,0.5};
795         types[8] = new Type("Poison",poisonMultiplier);
796         double[]groundMultiplier = {1,1,1,2,2,0,2,1,0.5,1,1,1,1,0.5,1,1,1,1,1};
797         types[9] = new Type("Ground",groundMultiplier);
798         double[]flyingMultiplier = {1,1,1,1,0.5,2,2,0.5,1,0,1,1,0.5,2,1,1,1,1,1};
799         types[10] = new Type("Flying",flyingMultiplier);
800         double[]psychicMultiplier = {1,1,1,1,1,1,1,0.5,1,1,1,0.5,2,1,2,1,2,1,1};
801         types[11] = new Type("Psychic",psychicMultiplier);
802         double[]bugMultiplier = {1,1,2,1,0.5,1,1,0.5,1,0.5,2,1,1,2,1,1,1,1,1};
803         types[12] = new Type("Bug",bugMultiplier);
804         double[]rockMultiplier = {1,0.5,0.5,2,2,1,1,2,0.5,2,0.5,1,1,1,1,1,1,2,1};
805         types[13] = new Type("Rock",rockMultiplier);
806         double[]ghostMultiplier = {1,0,1,1,1,1,1,0,0.5,1,1,1,0.5,1,2,1,2,1,1};
807         types[14] = new Type("Ghost",ghostMultiplier);
808         double[]dragonMultiplier = {1,1,0.5,0.5,0.5,0.5,2,1,1,1,1,1,1,1,1,2,1,1,2};
809         types[15] = new Type("Dragon",dragonMultiplier);
810         double[]darkMultiplier = {1,1,1,1,1,1,1,2,1,1,1,0,2,1,0.5,1,0.5,1,2};
811         types[16] = new Type("Dark",darkMultiplier);
812         double[]steelMultiplier = {1,0.5,2,1,0.5,1,0.5,2,0,2,0.5,0.5,0.5,0.5,1,0.5,1,0.5,0.5};
813         types[17] = new Type("Steel",steelMultiplier);
814         double[]fairyMultiplier = {1,1,1,1,1,1,1,0.5,2,1,1,1,0.5,1,1,0,0.5,2,1};
815         types[18] = new Type("fairy",fairyMultiplier);
816         if(second!=null){
817             boolean type1Found = true;
818             int type1Index = 0;
819             int i = 0;
820             while(type1Found){
821                 if(first.equalsIgnoreCase(types[i].getTypeName())){
822                     type1Index = i;
823                     type1Found = false;
824                 }
825                 i++;
826             }
827             boolean type2Found = true;
828             int type2Index = 0;
829             i = 0;
830             while(type2Found){
831                 if(second.equalsIgnoreCase(types[i].getTypeName())){
832                     type2Index = i;
833                     type2Found = false;
834                 }
835                 i++;
836             }
837             boolean type3Found = true;
838             int type3Index = 0;
839             i = 0;
840             while(type3Found){
841                 if(third.equalsIgnoreCase(types[i].getTypeName())){
842                     type3Index = i;
843                     type3Found = false;
844                 }
845                 i++;
846             }
847  
848             double[] type1 = types[type1Index].getTypeMultiplier();
849             double[] type2 = types[type2Index].getTypeMultiplier();
850  
851             if((type1[type3Index]==2&&type2[type3Index]==2)||(type1[type3Index]*type2[type3Index]==2)){
852  
853                 return true;
854             }else{
855                return false; 
856             }
857         }else{
858             boolean type1Found = true;
859             int type1Index = 0;
860             int i = 0;
861             while(type1Found){
862                 if(first.equalsIgnoreCase(types[i].getTypeName())){
863                     type1Index = i;
864                     type1Found = false;
865                 }
866                 i++;
867             }
868             
869             boolean type3Found = true;
870             int type3Index = 0;
871             i = 0;
872             while(type3Found){
873                 if(third.equalsIgnoreCase(types[i].getTypeName())){
874                     type3Index = i;
875                     type3Found = false;
876                 }
877                 i++;
878             }
879  
880             double[] type1 = types[type1Index].getTypeMultiplier();
881     
882  
883             if(type1[type3Index]==2){
884                 return true;
885             }else{
886                return false; 
887             }
888         }
889         
890     }
891 }
892 
893 
894